{
 "cells": [
  {
   "cell_type": "code",
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2025-11-21T14:41:45.523346Z",
     "start_time": "2025-11-21T14:41:45.505254Z"
    }
   },
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "date_ser =pd.Series([11,22,33,44])\n",
    "date_ser"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    11\n",
       "1    22\n",
       "2    33\n",
       "3    44\n",
       "dtype: int64"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 4
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-11-21T14:41:47.125580Z",
     "start_time": "2025-11-21T14:41:47.103284Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import pandas as pd\n",
    "\n",
    "# 创建一个简单的 DataFrame\n",
    "data = {'Name': ['Google', 'Runoob', 'Taobao'], 'Age': [25, 30, 35]}\n",
    "df = pd.DataFrame(data)\n",
    "\n",
    "# 查看 DataFrame\n",
    "print(df)"
   ],
   "id": "91bdf1501c22db78",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     Name  Age\n",
      "0  Google   25\n",
      "1  Runoob   30\n",
      "2  Taobao   35\n"
     ]
    }
   ],
   "execution_count": 5
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-11-21T14:41:41.442769Z",
     "start_time": "2025-11-21T14:41:41.329013Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "ypoints = np.array([1,3,4,5,8,9,6,1,3,4,5,2,4])\n",
    "\n",
    "plt.plot(ypoints, marker = 'o')\n",
    "plt.show()"
   ],
   "id": "5d1fb0bf6a029d32",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data",
     "jetTransient": {
      "display_id": null
     }
    }
   ],
   "execution_count": 3
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-11-21T14:50:10.493683Z",
     "start_time": "2025-11-21T14:50:10.484157Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import pandas as pd\n",
    "\n",
    "data_ser = pd.Series([12,56,89,99,31])\n",
    "data_ser"
   ],
   "id": "b19d733f0bc17a7a",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    12\n",
       "1    56\n",
       "2    89\n",
       "3    99\n",
       "4    31\n",
       "dtype: int64"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 6
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-11-21T14:50:32.189555Z",
     "start_time": "2025-11-21T14:50:32.173329Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from pandas._libs.tslibs.offsets import *\n",
    "\n",
    "data_offset = Week(2) + Hour(10)\n",
    "pd.date_range('2023/1/1','2023/1/31',freq = data_offset)"
   ],
   "id": "9d9047bee5501e28",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2023-01-01 00:00:00', '2023-01-15 10:00:00',\n",
       "               '2023-01-29 20:00:00'],\n",
       "              dtype='datetime64[ns]', freq='346h')"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 7
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-11-21T14:51:23.892066Z",
     "start_time": "2025-11-21T14:51:23.876777Z"
    }
   },
   "cell_type": "code",
   "source": [
    "period_index = pd.period_range('2023/1/8','2023/8/31',freq = 'M')\n",
    "per_ser = pd.Series(np.arange(8)+1,period_index)\n",
    "per_ser"
   ],
   "id": "21456205a8dc7a79",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2023-01    1\n",
       "2023-02    2\n",
       "2023-03    3\n",
       "2023-04    4\n",
       "2023-05    5\n",
       "2023-06    6\n",
       "2023-07    7\n",
       "2023-08    8\n",
       "Freq: M, dtype: int32"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 9
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-11-21T14:51:39.073397Z",
     "start_time": "2025-11-21T14:51:39.060900Z"
    }
   },
   "cell_type": "code",
   "source": [
    "str_list = ['2021','2022','2023']\n",
    "pd.PeriodIndex(str_list,freq='Y-DEC')"
   ],
   "id": "1426d30e71ded65d",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PeriodIndex(['2021', '2022', '2023'], dtype='period[Y-DEC]')"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 10
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-11-21T14:58:41.904477Z",
     "start_time": "2025-11-21T14:58:41.892348Z"
    }
   },
   "cell_type": "code",
   "source": [
    "period = pd.Period('2022',freq='Y-DEC')\n",
    "period.asfreq(freq='M',how='end')"
   ],
   "id": "64ddf25fdc4a44f8",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2022-12', 'M')"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 11
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-11-21T14:59:01.633983Z",
     "start_time": "2025-11-21T14:59:01.628359Z"
    }
   },
   "cell_type": "code",
   "source": [
    "temp = pd.period_range('2024.1',periods=30)\n",
    "temp_ser = pd.Series(np.arange(30)+1,temp)"
   ],
   "id": "cc42d343068546df",
   "outputs": [],
   "execution_count": 12
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-11-21T15:08:29.007170Z",
     "start_time": "2025-11-21T15:08:28.876671Z"
    }
   },
   "cell_type": "code",
   "source": [
    "alarm_record = pd.read_csv('./alarm.csv',parse_dates=['REPORTED_DATE'])\n",
    "alarm_record.head()"
   ],
   "id": "8bf8075d88a58d18",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "               OFFENSE_TYPE_ID OFFENSE_CATEGORY_ID       REPORTED_DATE  \\\n",
       "0             traffic-accident    traffic-accident 2022-05-22 14:41:00   \n",
       "1            threats-to-injure     public-disorder 2022-05-17 20:35:00   \n",
       "2  burglary-residence-by-force            burglary 2022-06-07 07:47:00   \n",
       "3                  theft-other             larceny 2022-05-26 16:46:00   \n",
       "4         criminal-trespassing    all-other-crimes 2022-06-07 07:42:00   \n",
       "\n",
       "      GEO_LON    GEO_LAT  IS_CRIME  IS_TRAFFIC  \n",
       "0 -104.673812  39.849292         0           1  \n",
       "1 -105.020053  39.694351         1           0  \n",
       "2 -104.981677  39.763597         1           0  \n",
       "3 -104.839119  39.769694         1           0  \n",
       "4 -104.673812  39.849292         1           0  "
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>OFFENSE_TYPE_ID</th>\n",
       "      <th>OFFENSE_CATEGORY_ID</th>\n",
       "      <th>REPORTED_DATE</th>\n",
       "      <th>GEO_LON</th>\n",
       "      <th>GEO_LAT</th>\n",
       "      <th>IS_CRIME</th>\n",
       "      <th>IS_TRAFFIC</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>2022-05-22 14:41:00</td>\n",
       "      <td>-104.673812</td>\n",
       "      <td>39.849292</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>threats-to-injure</td>\n",
       "      <td>public-disorder</td>\n",
       "      <td>2022-05-17 20:35:00</td>\n",
       "      <td>-105.020053</td>\n",
       "      <td>39.694351</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>burglary-residence-by-force</td>\n",
       "      <td>burglary</td>\n",
       "      <td>2022-06-07 07:47:00</td>\n",
       "      <td>-104.981677</td>\n",
       "      <td>39.763597</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>theft-other</td>\n",
       "      <td>larceny</td>\n",
       "      <td>2022-05-26 16:46:00</td>\n",
       "      <td>-104.839119</td>\n",
       "      <td>39.769694</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>criminal-trespassing</td>\n",
       "      <td>all-other-crimes</td>\n",
       "      <td>2022-06-07 07:42:00</td>\n",
       "      <td>-104.673812</td>\n",
       "      <td>39.849292</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 14
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-11-21T15:09:03.347618Z",
     "start_time": "2025-11-21T15:09:03.307021Z"
    }
   },
   "cell_type": "code",
   "source": "alarm_record.info()",
   "id": "e34e9a8b57f4f41a",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 65617 entries, 0 to 65616\n",
      "Data columns (total 7 columns):\n",
      " #   Column               Non-Null Count  Dtype         \n",
      "---  ------               --------------  -----         \n",
      " 0   OFFENSE_TYPE_ID      65617 non-null  object        \n",
      " 1   OFFENSE_CATEGORY_ID  65617 non-null  object        \n",
      " 2   REPORTED_DATE        65617 non-null  datetime64[ns]\n",
      " 3   GEO_LON              65617 non-null  float64       \n",
      " 4   GEO_LAT              65617 non-null  float64       \n",
      " 5   IS_CRIME             65617 non-null  int64         \n",
      " 6   IS_TRAFFIC           65617 non-null  int64         \n",
      "dtypes: datetime64[ns](1), float64(2), int64(2), object(2)\n",
      "memory usage: 3.5+ MB\n"
     ]
    }
   ],
   "execution_count": 15
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-11-21T15:10:35.505225Z",
     "start_time": "2025-11-21T15:10:35.494670Z"
    }
   },
   "cell_type": "code",
   "source": "final_alarm_record = alarm_record.sort_index()",
   "id": "c7a3af805364db1d",
   "outputs": [],
   "execution_count": 16
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-11-21T15:11:06.945098Z",
     "start_time": "2025-11-21T15:11:06.924064Z"
    }
   },
   "cell_type": "code",
   "source": "alarm_record['REPORTED_DATE'].dt.date.head",
   "id": "c1555e06122fc909",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<bound method NDFrame.head of 0        2022-05-22\n",
       "1        2022-05-17\n",
       "2        2022-06-07\n",
       "3        2022-05-26\n",
       "4        2022-06-07\n",
       "            ...    \n",
       "65612    2022-09-13\n",
       "65613    2022-09-12\n",
       "65614    2022-09-12\n",
       "65615    2022-09-12\n",
       "65616    2022-09-12\n",
       "Name: REPORTED_DATE, Length: 65617, dtype: object>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 17
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-11-21T15:11:46.732689Z",
     "start_time": "2025-11-21T15:11:46.686526Z"
    }
   },
   "cell_type": "code",
   "source": "record_3_5 = final_alarm_record.sort_index().loc['2022-03-01':'2022-05-31']",
   "id": "2300440506216989",
   "outputs": [],
   "execution_count": 18
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
